package com.browsesoft.adapter;

import java.util.LinkedList;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.w3c.dom.Document;
import org.w3c.dom.Element;

import com.browsesoft.EntityManager;
import com.browsesoft.ExtendElement;
import com.browsesoft.htmlcomponent.HTMLBasicComponent;
import com.browsesoft.htmlcomponent.HTMLTableModel;
import com.browsesoft.user.Organization;
import com.browsesoft.user.User;

public class LoginStat implements HTMLTableModel {
	/**
	 * 所有用户列表
	 */
	private LinkedList users = new LinkedList();

	// 组ID
	private String parentid = null;

	/**
	 * 初始化model
	 * 
	 * @throws Exception
	 */
	public void init(HttpServletRequest request) throws Exception {
	}

	/**
	 * 得到列数
	 * 
	 * @return 列数
	 */
	public int getColumnCount() {
		return 2;
	}

	/**
	 * 得到列的名称
	 * 
	 * @param index
	 *            列号
	 * @return 列的名称
	 */
	public String getColumnName(int index) {
		String[] types = { "用户名", "登陆次数" };
		return types[index];
	}

	/**
	 * 得到列的英文名
	 * 
	 * @param index
	 *            列号
	 * @return 列的英文名
	 */
	public String getColumnEname(int index) {
		return "";
	}

	public Object getDatas() {
		return null;
	}

	/**
	 * 得到行数
	 * 
	 * @return 行数
	 */
	public int getRowCount() {
		if (users != null) {
			return users.size();
		} else {
			return 0;
		}
	}

	/**
	 * 设置传递的参数
	 * 
	 * @param request
	 */
	public void service(HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		if (parentid == null) {
			// 取得父ID
			this.parentid = request.getParameter("point");
		}
		// 取得组下的所有的用户ID
		Organization org = (Organization) EntityManager.getInstance()
				.getObject(parentid);
		// 取得用户列表
		users = org.getChildUser();
	}

	/**
	 * 得到某列的操作类型
	 * 
	 * @return 类型
	 */
	public String getType(int col) {
		String[] types = { "td", "td" };
		return types[col];
	}

	/**
	 * 修改单元值
	 */
	public void modifyCellValue(Element td, Document doc, int row, int col) {
		try {
			User user = (User) users.get(row);
			// 用户名称
			if (col == 0) {
				ExtendElement.replaceElementContext(td, doc
						.createTextNode((String) user.getAttributes().get(
								"name")));
			}
			// 登陆次数
			else if (col == 1) {
				String loginNumber = String.valueOf(user.getLoginNumber());
				ExtendElement.replaceElementContext(td, doc
						.createTextNode(loginNumber));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 设置模型所对应的组件
	 * 
	 * @param component
	 *            对应的组件
	 */
	public void setComponent(HTMLBasicComponent component) {
	}

	/**
	 * 模型更新页面元素
	 * 
	 * @throws Exception
	 */
	public void updatePageElement(HTMLBasicComponent c) throws Exception {
	}

	public boolean isNum(String str) {
		boolean isnum = true;
		for (int i = 0; i < str.length(); i++) {
			char c = str.charAt(i);
			if (c < '0' || c > '9') {
				isnum = false;
			}
		}
		return isnum;
	}

	/**
	 * 设置条件
	 */
	public void setCondition(String condition) {
	}
}